Wprowadzenie
Tablice (arrays) są kontenerami danych, co znaczy, że można w nich umieszczać wiele wartości. Zbiór wartości tablicy nazywamy elementami tablicy.
Każdy element tablicy ma przypisany indeks, czyli numer reprezentujący jego pozycję w tablicy. Indeksy liczymy od zera, czyli pierwszy element będzie miał indeks 0. Co ważne, jest to aktualna pozycja w tablicy – przy zmianach zawartości tablicy mogą zmieniać się indeksy poszczególnych wartości.
Tablice stosujemy w sytuacjach, gdy potrzebujemy zbioru wartości, dla których nie potrzebujemy stałych kluczy (etykiet, nazw). Dobrym przykładem będzie każda sytuacja, w której będziemy iterować pętlą przez wszystkie elementy tablicy, ale nigdy (poza pętlą) nie będziemy potrzebowali uzyskać dostępu do pojedynczego elementu tablicy.
Tworzenie tablicy
Tablicę tworzymy za pomocą nawiasów kwadratowych [ ]. Możemy stworzyć pustą tablicę, lub od razu zapisać w niej elementy.
const categories = [];
console.log('categories:', categories); // categories: []
const keywords = ['travel', 'France'];
console.log('keywords:', keywords); // keywords: ['travel', 'France']Standardowo tablicę będziemy zapisywać w stałej const, aby przez przypadek nie nadpisać całej tablicy. Nie jest to przeszkodą, aby zmieniać zawartość tablicy.
Dodawanie elementów do tablicy
Najczęstszą metodą dodawania wartości do tablicy jest push, która dodaje nowe wartości na końcu tablicy.
categories.push('animals');
console.log('categories:', categories); // categories: ['animals']
categories.push('travel');
console.log('categories:', categories); // categories: ['animals', 'travel']
keywords.push('Paris');
console.log('keywords:', keywords); // keywords: ['travel', 'France', 'Paris']Liczba elementów w tablicy
Możemy łatwo sprawdzić, ile elementów znajduje się obecnie w tablicy za pomocą właściwości length.
const categoriesLength = categories.length;
console.log('categoriesLength:', categoriesLength); // categoriesLength: 2
const keywordsLength = keywords.length;
console.log('keywordsLength:', keywordsLength); // keywordsLength: 3Odczytywanie elementów tablicy
Do odczytania pojedynczego elementu z tablicy użyjemy nazwy tablicy, do której dodamy nawiasy kwadratowe [ ] z indeksem elementu, który chcemy pobrać.
const firstCategory = categories[0];
console.log('firstCategory:', firstCategory); // firstCategory: animalsCzęsto jednak indeks nie jest podawany bezpośrednio, ale przechowywany w zmiennej. W tej sytuacji również używamy nawiasów kwadratowych [ ].
const indexOfSecondCategory = 1;
const secondCategory = categories[indexOfSecondCategory];
console.log('secondCategory:', secondCategory); // secondCategory: travelZnajdowanie indeksu elementu
Kiedy chcemy sprawdzić, jaki indeks ma pewna konkretna wartość, możemy to zrobić za pomocą metody indexOf.
const indexOfTravel = categories.indexOf('travel');
console.log('indexOfTravel:', indexOfTravel); // indexOfTravel: 1
console.log('value at indexOfTravel:', categories[indexOfTravel]); // value at indexOfTravel: travelMetoda indexOf przydaje się również do sprawdzenia, czy jakaś wartość znajduje się już w tablicy. Jeśli wartość nie zostanie znaleziona w tablicy, indexOf zwróci -1.
const indexOfCars = categories.indexOf('cars');
console.log('indexOfCars:', indexOfCars); // indexOfCars: -1Usuwanie elementu
Jest kilka sposobów na usunięcie elementu z tablicy. Jednym z bardziej elastycznych jest metoda splice.
Składnia
const allRemovedValues = myArray.splice(startAtIndex, numberOfElements);categories.push('fruits');
categories.push('food');
categories.push('phones');
console.log('categories:', categories); // categories: ['animals', 'travel', 'fruits', 'food', 'phones']
const indexOfFruits = categories.indexOf('fruits');
console.log('indexOfFruits:', indexOfFruits); // indexOfFruits: 2
const removedValues = categories.splice(indexOfFruits, 1);
console.log('removedValues:', removedValues); // removedValues: ['fruits']
console.log('categories:', categories); // categories: ['animals', 'travel', 'food', 'phones']
const indexOfFood = categories.indexOf('food');
console.log('indexOfFood:', indexOfFood); // indexOfFood: 2
categories.splice(indexOfFood, 2);
console.log('categories:', categories); // categories: ['animals', 'travel']Wyjaśnienie przykładu
Metoda splice przyjmuje dwa argumenty:
- indeks pierwszego usuwanego elementu,
- liczbę elementów, licząc od pierwszego usuwanego elementu.
W naszym przykładzie dodaliśmy dwa elementy – 'fruits' i 'food'. Najpierw usuwamy 'fruits', korzystając z tego, że metoda splice zwraca elementy usunięte z tablicy. Dlatego możemy je zapisać w stałej removedValues.
Druga część przykładu pokazuje, że możemy również użyć metody splice bez przypisywania zwracanej przez nią wartości do żadnej zmiennej/stałej. W tym wypadku usuwamy 2 elementy ('food' i 'phones'), począwszy od elementu o indeksie 2 (czyli 'food').
Mogło Cię zdziwić, że indexOfFood ma wartość 2, tak samo jak wcześniej indexOfFruits. Wynika to z faktu, że po usunięciu 'fruits' zmieniły się indeksy pozostałych elementów w tablicy.
Generowanie tekstu z tablicy
W prosty sposób możemy wygenerować tekst, składający się z elementów tablicy, połączonych ze sobą dowolnym ciągiem tekstu (string). Wykorzystamy do tego metodę join.
const joinedText = keywords.join(', ');
console.log('joinedText:', joinedText); // joinedText: travel, France, ParisMożemy wykorzystywać metodę join do szybkiego tworzenia kodu HTML, np.:
const html = '<ul><li>' + keywords.join('</li><li>') + '</li></ul>';
console.log('html:', html);
// html: <ul><li>travel</li><li>France</li><li>Paris</li><li>Eiffel Tower</li></ul>Tworzenie tablicy z tekstu
Operacją odwrotną do join jest split – dzieli tekst na elementy tablicy, używając podanego ciągu znaków do podzielenia tekstu.
const subjects = 'cat, cactus, needle';
const subjectsArray = subjects.split(', ');
console.log('subjectsArray:', subjectsArray); // subjectsArray: ['cat', 'cactus', 'needle']Iterowanie po tablicy (pętle)
Kiedy potrzebujemy wykonać jakieś operacje dla wszystkich elementów tablicy, możemy wykorzystać pętle for oraz for...of. Głównym czynnikiem wpływającym na wybór jednej z tych pętli jest kwestia indeksu – jeśli w pętli nie potrzebujemy korzystać z indeksu elementu, wygodniej będzie nam użyć pętli for...of.
Przykłady użycia pętli do iterowania po tablicach znajdziesz w rozdziale Pętle.
Tablice wielowymiarowe
Elementami tablicy mogą być np. liczby czy teksty, ale mogą to być również obiekty i tablice. Przykład takiej wielopoziomowej struktury danych znajdziesz w rozdziale o Obiektach.
Przydatne metody i właściwości
Rozmiar tablicy
| Metoda | Opis |
|---|---|
length |
podaje liczbę elementów w tablicy |
Znajdowanie indeksu elementu
| Metoda | Opis |
|---|---|
indexOf() |
znajduje indeks podanego elementu |
Dodawanie i usuwanie elementów
| Metoda | Opis |
|---|---|
push() |
dodaje element na końcu tablicy |
pop() |
usuwa element z końca tablicy |
shift() |
usuwa element z początku tablicy |
unshift() |
dodaje element na początku tablicy |
Zmiana kolejności elementów
| Metoda | Opis |
|---|---|
sort() |
sortuje elementy tablicy |
reverse() |
odwraca kolejność elementów |
Modyfikacja tablicy
| Metoda | Opis |
|---|---|
map() |
zmienia każdy element tablicy za pomocą funkcji |
filter() |
filtruje elementy tablicy |
Dzielenie i łączenie tablic
| Metoda | Opis |
|---|---|
slice() |
tworzy nową tablicę z części elementów |
concat() |
tworzy nową tablicę z elementów wielu tablic |
Konwersja tablicy na tekst
| Metoda | Opis |
|---|---|
join() |
łączy elementy tablicy w tekst |